package com.own.business.system.parameter.adapter.method;

import com.own.business.system.parameter.adapter.base.BaseParameterModel;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * SystemParameterInfoMethod
 *
 * @author chenxueli
 * @date 2023-06-29 09:23:31
 */
@Component
public interface SystemParameterInfoMethod {

    /**
     * 根据id获取参数信息
     *
     * @param id 主键id
     * @return 参数信息
     */
    BaseParameterModel getById(Long id);

    /**
     * 根据code获取参数信息
     *
     * @param code 参数code
     * @return 参数信息
     */
    BaseParameterModel getByCode(String code);

    /**
     * 根据参数分组获取参数列表
     *
     * @param group 参数分组
     * @return 参数列表
     */
    List<? extends BaseParameterModel> listByGroup(String group);

    /**
     * 根据id获取参数值
     *
     * @param id 主键id
     * @return 参数值
     */
    default String getValueById(Long id) {
        var model = getById(id);
        if (model == null) {
            return null;
        }
        return model.getValue();
    }

    /**
     * 根据code获取参数信息
     *
     * @param code 参数code
     * @return 参数信息
     */
    default String getValueByCode(String code) {
        var model = getByCode(code);
        if (model == null) {
            return null;
        }
        return model.getValue();
    }

}
